Antes de correr el programa se deben descargar los paquetes utilizados. Esto se realiza en la terminal con el comando pip install ...
!pip install geopandas
Collecting geopandas Using cached geopandas-0.12.2-py3-none-any.whl (1.1 MB) Collecting shapely>=1.7 Downloading shapely-2.0.1-cp38-cp38-win_amd64.whl (1.4 MB) Collecting pyproj>=2.6.1.post1 Downloading pyproj-3.4.1-cp38-cp38-win_amd64.whl (4.9 MB) Requirement already satisfied: pandas>=1.0.0 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from geopandas) (1.4.1) Collecting fiona>=1.8 Downloading Fiona-1.9.1-cp38-cp38-win_amd64.whl (22.0 MB) Requirement already satisfied: packaging in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from geopandas) (21.3) Collecting munch>=2.3.2 Using cached munch-2.5.0-py2.py3-none-any.whl (10 kB) Collecting cligj>=0.5 Using cached cligj-0.7.2-py3-none-any.whl (7.1 kB) Collecting click-plugins>=1.0 Using cached click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB) Requirement already satisfied: certifi in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from fiona>=1.8->geopandas) (2021.10.8) Requirement already satisfied: setuptools in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from fiona>=1.8->geopandas) (58.0.4) Requirement already satisfied: attrs>=19.2.0 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from fiona>=1.8->geopandas) (21.4.0) Requirement already satisfied: click~=8.0 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from fiona>=1.8->geopandas) (8.1.2) Requirement already satisfied: colorama in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from click~=8.0->fiona>=1.8->geopandas) (0.4.4) Requirement already satisfied: six in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from munch>=2.3.2->fiona>=1.8->geopandas) (1.16.0) Requirement already satisfied: python-dateutil>=2.8.1 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from pandas>=1.0.0->geopandas) (2.8.2) Requirement already satisfied: pytz>=2020.1 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from pandas>=1.0.0->geopandas) (2021.3) Requirement already satisfied: numpy>=1.18.5 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from pandas>=1.0.0->geopandas) (1.22.3) Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from packaging->geopandas) (3.0.7) Installing collected packages: munch, cligj, click-plugins, shapely, pyproj, fiona, geopandas Successfully installed click-plugins-1.1.1 cligj-0.7.2 fiona-1.9.1 geopandas-0.12.2 munch-2.5.0 pyproj-3.4.1 shapely-2.0.1
import geopandas as gpd
import matplotlib.pyplot as plt
import pandas as pd
# Load the .shp file
shapefile = gpd.read_file('scince_2020/gro/cartografia/gro_ageb_urb.shp')
!pip install simpledbf
!pip install folium
!pip install branca
Requirement already satisfied: simpledbf in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (0.2.6) Collecting folium Using cached folium-0.14.0-py2.py3-none-any.whl (102 kB) Requirement already satisfied: numpy in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from folium) (1.22.3) Requirement already satisfied: requests in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from folium) (2.27.1) Requirement already satisfied: jinja2>=2.9 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from folium) (3.0.2) Requirement already satisfied: branca>=0.6.0 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from folium) (0.6.0) Requirement already satisfied: MarkupSafe>=2.0 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from jinja2>=2.9->folium) (2.0.1) Requirement already satisfied: idna<4,>=2.5 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from requests->folium) (3.3) Requirement already satisfied: charset-normalizer~=2.0.0 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from requests->folium) (2.0.12) Requirement already satisfied: certifi>=2017.4.17 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from requests->folium) (2021.10.8) Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from requests->folium) (1.26.9) Installing collected packages: folium Successfully installed folium-0.14.0 Requirement already satisfied: branca in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (0.6.0) Requirement already satisfied: jinja2 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from branca) (3.0.2) Requirement already satisfied: MarkupSafe>=2.0 in c:\users\rivas\anaconda3\envs\ia_negocios_housing\lib\site-packages (from jinja2->branca) (2.0.1)
!pip install PyTables
ERROR: Could not find a version that satisfies the requirement PyTables (from versions: none) ERROR: No matching distribution found for PyTables
# indicador data - Load dbf file (You can use any data format including a .csv, but it should be a pandas dataframe)
from simpledbf import Dbf5
dbf = Dbf5("scince_2020/gro/tablas/gro_cpv2020_ageb_urb_mortalidad.dbf")
datos = dbf.to_dataframe()
#Extract values (MOR1_R is the example variable)
indicador = datos.MOR1_R.to_list()
# Change the name to indicador
datos=datos.rename(columns={"MOR1_R":"indicador"})
# Add indicador data to df
shapefile = pd.merge (
left = shapefile,
right = datos,
on = 'CVEGEO',
how = 'left'
)
# Change the name to AGEB
shapefile=shapefile.rename(columns={"CVEGEO":"AGEB"})
# Set a color scale
import branca.colormap as cm
linear = cm.LinearColormap(["green", "yellow", "red"], vmin=min(indicador), vmax=max(indicador))
linear
# Create a folium map object, and set coordenates for the display
import folium
m = folium.Map(location=[19.432608, -99.133209], zoom_start=11)
# Convert the geopandas dataframe to a GeoJSON format
geojson = shapefile.to_crs(epsg='4326').__geo_interface__
# Add the GeoJSON layer to the folium map to add format
folium.GeoJson(
geojson,
style_function=lambda feature: {
'fillColor': linear(feature["properties"]["indicador"]),
'color': "black",
'weight': 0.5,
'fillOpacity': 0.7
},
tooltip = folium.features.GeoJsonTooltip(["AGEB","indicador"])
).add_to(m)
<folium.features.GeoJson at 0x1f8b505ce50>
m